package com.itestor.iptv.modules.ne.service;


import java.util.Date;
import java.util.List;
import java.util.Map;

import com.itestor.iptv.modules.common.bean.RobotRealtimeQuery;
import com.itestor.iptv.modules.common.vo.RobotRealtimeBaan;
import com.itestor.iptv.modules.ne.bean.RobotChooseQuery;
import com.itestor.iptv.modules.ne.bean.RobotManageQuery;
import com.itestor.iptv.modules.ne.bean.RobotManageTvWallQuery;
import com.itestor.iptv.modules.ne.bean.RobotSelectQuery;
import com.itestor.iptv.modules.ne.bean.RoleSelRobotQuery;
import com.itestor.iptv.modules.ne.domain.RobotCFG;
import com.itestor.iptv.modules.ne.domain.RobotFileInfo;
import com.itestor.iptv.modules.ne.domain.RobotManage;
import com.itestor.iptv.modules.ne.domain.RobotNetInfo;
import com.itestor.iptv.modules.ne.vo.RobotCFGOBJ;
import com.itestor.iptv.modules.ne.vo.RobotFileInfoOBJ;
import com.itestor.iptv.modules.ne.vo.RobotManageOBJ;
import com.itestor.iptv.modules.ne.vo.RobotNetInfoOBJ;
import com.itestor.iptv.modules.ne.vo.RobotNodeStatusBean;

/**
 * 
 * @author Mr.li
 *
 */
public interface RobotManageService {

    public RobotManageOBJ get(String name);

    public RobotManageOBJ get(int id);
    
    public void queryRobotManageList(RobotManageQuery robotManageQuery);
    
    public void queryRobotChooseList(RobotChooseQuery robotChooseQuery);
    
    public void queryRobotSelectList(RobotSelectQuery robotSelectQuery);
    
    public void queryRobotManageRegionList(RobotManageTvWallQuery robotManageQuery);

    public void add(RobotManageOBJ robotManageO);

    public void delete(int[] ids);

    public void modify(RobotManageOBJ robotManageO);
    
    public List<Object[]> getAllRobotManage(String id);

    public RobotCFGOBJ getRobotCFGOBJ(int id);
    
    public RobotFileInfoOBJ getRobotFileInfoOBJ(int id);
    
    public RobotNetInfoOBJ getRobotNetInfoOBJ(int id);
    
    public void modify(RobotCFGOBJ robotCFGO);
    
    public void modify(RobotFileInfoOBJ robotFileInfoO);
    
    public void modify(RobotNetInfoOBJ robotNetInfoO);

    public RobotManage convertToRobotManage(RobotManageOBJ robotManageO);
    
    public RobotCFGOBJ convertToRobotCFGOBJ(RobotCFG robotCFG);
  
    public RobotCFG convertToRobotCFG(RobotCFGOBJ robotCFGO);
    
    public RobotFileInfoOBJ convertToRobotFileInfoOBJ(RobotFileInfo robotFileInfo);
   
    public RobotFileInfo convertToRobotFileInfo(RobotFileInfoOBJ robotFileInfoO);
    
    public RobotNetInfoOBJ convertToRobotNetInfoOBJ(RobotNetInfo robotNetInfo);
  
    public RobotNetInfo convertToRobotNetInfo(RobotNetInfoOBJ robotNetInfoO);

    public RobotManageOBJ convertToRobotManageOBJ(RobotManage robotManage);
    
    public void add(RobotCFGOBJ robotCFGO);
    
    public void add(RobotFileInfoOBJ robotFileInfoO);
    
    public void add(RobotNetInfoOBJ robotNetInfoO);
    
    public void deleteRobotCFG(int[] ids);

    public void deleteRobotFileInfo(int[] ids);
    
    public void deleteRobotNetInfo(int[] ids);

    public void deleteRobotGroupManage(int[] pIds);
    
    public void deleteRelRoleGroup(int[] pIds);
    
    public void queryRoleSelRobotList(RoleSelRobotQuery pRoleSelRobotQuery);

    public void queryRealtimeDataList(RobotRealtimeQuery pRobotRealtimeQuery);
    
    public void getRealtimeQuality(RobotRealtimeBaan raaltimeBean);
    
    public void getRealtimeLostRate(RobotRealtimeBaan raaltimeBean);

    public void getRealtimeQosRecord(RobotRealtimeBaan pRaaltimeBean);
  
    
    public Integer queryAllRobotManagers();
    
    /**
     * 获取节点状态列表
     * @param userId
     * @param lastIpUpdateTime
     * @return Map
     */
    public Map<Integer,Map<Integer,RobotNodeStatusBean>> getNodeStatusListByUser(Integer userId,Date lastIpUpdateTime);
    
    
    /**
     * 获取节点告警列表
     * @param userId
     * @param startTime
     * @param endTime
     * @return Map
     */
    public Map<Integer,RobotNodeStatusBean> getNodeAlertListByUser(Integer userId,Date startTime,Date endTime);
    
    
    /**
     * 
     * 获取节点告警列表
     * @param pUserId
     * @param pStartTime
     * @param pEndTime
     * @param topn
     * @return List
     */
    public List<RobotNodeStatusBean> getNodeStatusAlertsByUser(
            Integer pUserId, Date pStartTime, Date pEndTime,Integer topn);
    
    
    /** 
     * 获取节点状态列表
     * @param pUserId  
     * @return List
     */
    public List<RobotNodeStatusBean> getNodeStatusListByUser(
            Integer pUserId);
    
    /**
     * 获取最新节点数据
     * @param pUserId
     * @return List
     */
    public List<RobotNodeStatusBean> getLastNodeDataListByUser(
            Integer pUserId);
    
    
    
}
